//
// ShadeRec.hpp for  in ~/Dropbox/Projets/raytracer-2016/Includes/Maths/
//
// Made by Jonathan
// Login   <ledey_l@epitech.net>
//
// Started on  Tue Sep 24 23:58:57 2013 Jonathan
// Last update Wed Sep 25 00:10:20 2013 Jonathan
//

#ifndef			SHADEREC_HPP_
# define		SHADEREC_HPP_

# include		<vector>

# include		"Maths/Point.hpp"
# include		"Maths/Normal.hpp"
# include		"Maths/Ray.hpp"
# include		"Maths/Color.hpp"

namespace		Material
{
  class			Material;
};

namespace		World
{
  class			World;
};

namespace		Maths
{
  class			ShadeRec
  {
  private:
    ShadeRec(void);
    ShadeRec		&operator=(ShadeRec const &rOther);

  public:
    ShadeRec(World::World const &rWorld);
    ShadeRec(ShadeRec const &rOther);
    ~ShadeRec(void);

    bool		mHitAnObject;
    Material::Material	*mMaterialPtr;
    Point		mHitPoint;
    Point		mLocalHitPoint;
    Normal		mNormal;
    Ray			mRay;
    unsigned short	mDepth;
    long double		mT;
    World::World const	&mWorld;
    Color		mColor;
  };
};

#endif			/* SHADEREC_HPP_ */
